package com.doublethread.easymart.modules.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.doublethread.easymart.common.result.PageResult;
import com.doublethread.easymart.modules.product.dto.ProductDTO;
import com.doublethread.easymart.modules.product.dto.ProductQueryDTO;
import com.doublethread.easymart.modules.product.dto.ProductUpdateStatusDTO;
import com.doublethread.easymart.modules.product.dto.ProductUpdateStockDTO;
import com.doublethread.easymart.modules.product.entity.Product;
import com.doublethread.easymart.modules.product.vo.ProductStatisticsVO;
import com.doublethread.easymart.modules.product.vo.ProductVO;

import java.util.List;

/**
 * 商品服务接口
 */
public interface ProductService extends IService<Product> {

    /**
     * 获取商品列表
     */
    PageResult<ProductVO> getProductList(ProductQueryDTO queryDTO);

    /**
     * 获取商品详情
     */
    ProductVO getProductById(Long productId);

    /**
     * 搜索商品
     */
    PageResult<ProductVO> searchProducts(ProductQueryDTO queryDTO);

    /**
     * 获取热门商品
     */
    List<ProductVO> getHotProducts(Integer limit);

    /**
     * 获取新品推荐
     */
    List<ProductVO> getNewProducts(Integer limit);

    /**
     * 获取相关商品
     */
    List<ProductVO> getRelatedProducts(Long productId, Integer limit);

    /**
     * 获取品牌列表
     */
    List<String> getBrands();

    /**
     * 分页查询商品列表
     */
    PageResult<ProductVO> getAdminProductList(ProductQueryDTO queryDTO);

    /**
     * 获取商品详情
     */
    ProductVO getAdminProductById(Long productId);

    /**
     * 创建商品
     */
    ProductVO createProduct(ProductDTO productDTO);

    /**
     * 更新商品
     */
    void updateProduct(Long productId, ProductDTO productDTO);

    /**
     * 删除商品
     */
    void deleteProduct(Long productId);

    /**
     * 更新商品状态
     */
    void updateProductStatus(Long productId, ProductUpdateStatusDTO statusDTO);

    /**
     * 更新商品库存
     */
    void updateProductStock(Long productId, ProductUpdateStockDTO stockDTO);

    /**
     * 上传商品图片
     */
    String uploadProductImage(String imageBase64);

    /**
     * 获取商品统计信息
     */
    ProductStatisticsVO getProductStatistics();
}
